package com.literaryfamily.literaryfamily.service.orders;

import com.literaryfamily.literaryfamily.entity.Book;
import com.literaryfamily.literaryfamily.entity.UserShoppingCar;

import java.util.List;


/**
 * 书籍买卖接口
 * 请注意下单方法应该是线程安全的,安全关键字为:BookId
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 *
 * @author 滑稽/因果报应
 */
public interface ShoppingCartService {
    /**
     * 添加到购物车
     *
     * @param userId 添加的用户
     * @param bookId 书籍ID
     * @return 添加结果
     */
    UserShoppingCar addToShoppingCart(Long userId, Long bookId);

    /**
     * 删除用户购物车里的书籍
     *
     * @param userId 用户Id
     * @param bookId 对应的书籍
     * @return 被删除的信息
     */
    UserShoppingCar delToShoppingCart(Long userId, Long bookId);

    /**
     * 获取某个用户的购物车
     *
     * @param userId 用户ID
     * @return 购物车中的所有书籍
     */
    List<Book> getUserShoppingCar(Long userId);
}